package demo.controller;

import demo.dao.UserMapper;
import jdbc.InputUtil;
import jdbc.UserInfo;

import java.util.Scanner;

/**
 * 控制器
 * 用于根据用户的不同需求调用不同业务操作
 */
public class UserController {

    private UserMapper userMapper = new UserMapper();

    public void start(){
        System.out.println("欢迎使用用户管理系统");
        System.out.println("请输入要进行操作的编号:");
        System.out.println("[1]:用户注册");
        System.out.println("[2]:用户登录");
        System.out.println("[3]:修改密码");
        Scanner scanner = new Scanner(System.in);
        String num = scanner.nextLine();
        switch (num){
            case "1":
                regUser();
                break;
            case "2":
                loginUser();
                break;
            case "3":
                changePWD();
                break;
            default:
                System.out.println("编号输入有误");
        }
    }
    //注册用户功能
    public void regUser(){
        //用户注册要求:用户名不能重复
        UserInfo userInfo = InputUtil.getInputObject(new UserInfo(),"欢迎注册");
        //验证是否为重复用户
        if(userMapper.findByUsername(userInfo.getUsername())!=null){
            System.out.println("该用户已存在");
        }else{
            userMapper.insert(userInfo);
            System.out.println("注册成功");
        }
    }
    //用户登录功能
    public void loginUser(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("欢迎登录");
        System.out.println("请输入用户名:");
        String username = scanner.nextLine();
        System.out.println("请输入新密码:");
        String password = scanner.nextLine();

        UserInfo userInfo = userMapper.findByUsername(username);
        if(userInfo==null||!userInfo.getPassword().equals(password)){
            System.out.println("用户名或密码输入有误，登录失败");
        }else{
            System.out.println("登录成功，欢迎回来:"+userInfo.getNickname());
        }

    }
    //修改密码功能
    public void changePWD(){
        /*
            首先要求用户输入三个信息:
            1:用户名，旧密码，新密码
            2:根据用户名和旧密码判断输入是否正确
            3:如果旧密码正确则将新密码进行修改，否则提示用户输入有误
         */
        Scanner scanner = new Scanner(System.in);
        System.out.println("修改密码");
        System.out.println("请输入用户名:");
        String username = scanner.nextLine();
        System.out.println("请输入旧密码:");
        String oldPassword = scanner.nextLine();
        System.out.println("请输入新密码:");
        String newPassword = scanner.nextLine();

        //首先判断旧密码对不对
        //userinfo->张三,666666,阿三,16
        UserInfo userInfo = userMapper.findByUsername(username);
        /*
            userInfo为NULL说明根据该用户名没有查询到用户，用户名输入是错误的
            userInfo记录的是表中该用户的密码，和用户输入的旧密码比对若不一致说明旧密码输入错误
         */
        if(userInfo==null||!userInfo.getPassword().equals(oldPassword)){
            System.out.println("输入信息有误，修改失败");
        }else{
            //如果上述输入都正确，将新密码设置到UserInfo中，其他信息不变
            userInfo.setPassword(newPassword);
            //修改用户信息时相当于仅将密码更新了，其他数据不变
            userMapper.update(userInfo);
            System.out.println("修改成功");
        }




    }


    public static void main(String[] args) {
        UserController userController = new UserController();
        userController.start();
    }
}






